package com.sansui.blog.dao;

import com.sansui.blog.pojo.Tag;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @name: TagDao
 * @author: Sansui
 * @Software: IDEA
 * @Blog: https://www.cnblogs.com/sansui6/
 * @date: 2022-03-21 21:21
 **/

// 标签管理Dao
@Mapper
public interface TagDao {
    /*
    * 获取所有状态有效的标签信息
    * */
    List<Tag> findAllTag(@Param("page") Integer page, @Param("limit") Integer limit);

    List<Tag> findAll();
    /*
    * 获取标签数量
    * */
    Integer CountTag();

    Integer CountTagByLike(String tagName);

    /*
     * 根据标签id删除标签
     * */
    Integer deleteTag(Long tagId);

    /*
     * 根据标签名称查询标签(直接查询)
     * 用于查询是否存在同名标签
     * */
    Integer findTagByTagName(String tagName);

    /*
     * 添加标签
     * */
    Integer addTag(Tag tag);

    /*
     * 根据名称获取标签信息（模糊查询）
     * 用于查询包含或同名标签
     * */
    List<Tag> tagSearchByName(String tagName);

    /*
     * 根据id获取标签信息
     *
     * */
    Tag getTagById(Long tagId);

    /*
     * 根据名称获取标签信息
     *
     * */
    Tag getTagByName(String tagName);

    /*
     * 修改标签
     * */
    Integer updateTag(Tag tag);

    /*
    * 批量删除标签
    * */

    void deleteTagByIds(List<String> delList);

    /**
     * 获取博客对应标签数量
     * @return
     */
    Integer countTagNum();

    /**
     * 获取标签id、名称、以及对应博客数量
     * @return
     */
    List<Map<String, Object>> countTagInfo();

}
